A computer system generally includes multiple hardware and software resources that are configured to receive and transmit data packets. One such resource is a networking device that may receive data packets from a data network coupled to the computer system. The networking device may be comprised of multiple queues, which may include a combination of dedicated and shared device queues, for managing incoming data packets to be processed by one or more applications running on the computer system.
As data packets arrive at the networking device, they are routed to and temporarily stored in designated device queues based on unique identifiers, such as, for example, a media access control (MAC) address and/or a virtual LAN (VLAN) tag, or some other combination of data provided in the header of the data packet, to allow data packets to be matched with one or more applications running on the computer system.
As data packets are received in device queues of the networking device, interrupt requests (IRQ) are triggered to notify the computer system that there are data packets pending in the device queues, whereby IRQs are transmitted to the processor of the computer system for handling. An IRQ can be sent by means of interrupt messages (e.g., Message Signaled Interrupts (MSI-X)), changes to a voltage level on interrupt pins (e.g., pin-based interrupts), and/or other means. When the processor receives the IRQ from the networking device, it must temporarily halt its processing operations to examine and determine which applications the data packets are intended for.
The foregoing process is associated with significant overhead, involving numerous data packets associated with different interrupts to be passed to one or more applications for processing. As the frequency of data packets arriving at the networking device increases, so does the overhead required for servicing the interrupts, thereby degrading the overall performance of the computer system.